package com.hpeu_01.day0122;

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * TCP网络编程的服务端程序
 * 1. 在服务端需要创建ServerSocket对象，在创建对象时必须提供一
 * 个端口号，便于客户端通过此端口号来连接。
 * 2. 调用ServerSocket对象的accept()方法来创建Socket对象
 * 3. 如果是接收客户端的信息则调用Socket对象的getInputStream()
 * 方法来创建一个输入流
 * 4. 如果是向客户端发送数据，则调用Socket对象的getOutputStream()
 * 方法来创建一个输出流
 * 5. 处理数据
 * 6. 关闭资源
 *
 * 需求：接收客户端发来的信息并在控制台中显示
 */
public class TCPSocketServer {
    public static void main(String[] args) throws IOException {
        //创建ServerSocket对象
        ServerSocket ss = new ServerSocket(8888);
        // 2. 调用accept()方法来创建Socket对象
        Socket socket = ss.accept();
        // 3. 接收客户端的信息，创建输入流
        InputStream is = socket.getInputStream();
        // 4. 处理信息
        byte[] b = new byte[1024];
        int len = -1;
        while ((len = is.read(b)) != -1){
            System.out.print(new String(b, 0, len));
        }
        //5.关闭资源（关资源时反着关：先创建的后关，后创建的先关）
        is.close();
        socket.close();
        ss.close();
    }
}
